/**
 * 格式化页面函数方法
 */
const forMatVueEvents = (exportDefault, lowCodePageJson) => {
  // 是否挂载到xPage的页面初始化方法上
  // 因为低代码上created叫init, mounted叫load
  let eventsModel = {
    init: [],
    load: []
  }
  // 生成created的函数
  if(exportDefault.created){
    const create = getMethodContent(exportDefault.created);
    // 前插入到函数方法中
    lowCodePageJson.methods.unshift(forMatAsyncMethodNode('createdFn', create.content, [], '页面created初始化方法'))
    eventsModel.init.push(initEventsNode('createdFn'))
  }

  // 生成mounted的函数
  if(exportDefault.mounted){
    const mounted = getMethodContent(exportDefault.mounted);
    // 前插入到函数方法中
    lowCodePageJson.methods.unshift(forMatAsyncMethodNode('mountedFn', mounted.content, [], '页面mounted初始化方法'))
    eventsModel.load.push(initEventsNode('mountedFn'))
  }

  // 有无需要页面初始化同步方法的函数 [生成同步方法要在最前面]
  let synchronizationFunction = lowCodePageJson.methods.find(v=> v.name == 'synchronizationFunction');
  if(synchronizationFunction){
    eventsModel.init.unshift(initEventsNode('synchronizationFunction'))
  }

  // 需要赋值给xPage的bindData中赋值初始化动作
  const events = {};

  // 移除为空的事件，同时往xPage组件的on属性中赋值
  Object.keys(eventsModel).forEach(v=> {
    if(eventsModel[v] && eventsModel[v].length){
      events[`XPage_${v}`] = eventsModel[v];
      lowCodePageJson.children[0].on[v] = `XPage_${v}`
    }
  })

  return events;
}

// 生成对应的配置文档
const initEventsNode = (name) => {
  return {
    config: {
      runType: "clientFlow",
      name,
      actionName: name,
      inputs: [],
      output: {
        dataType: {
          type: "void",
          entity: "",
          list: false
        }
      }
    },
    id: dynamicUuid('flowCall'),
    type: "flowCall"
  }
}